package middleware

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

/**
 * 跨域中间件
 */

func CORSMiddleware() gin.HandlerFunc {
	return func(ctx *gin.Context) {
		//第二个参数可以填写域名，方法，*号代表所有访问
		ctx.Writer.Header().Set("Access-Control-Allow-Origin", "*")
		//设置缓存时间
		ctx.Writer.Header().Set("Access-Control-Max-Age", "86400")
		//设置可以通过访问的方法，可以get.post 或其它 ，*号代表所有
		ctx.Writer.Header().Set("Access-Control-Allow-Methods", "*")
		//可以允许访问的header ，*号代表所有
		ctx.Writer.Header().Set("Access-Control-Allow-Headers", "*")
		//可以允许访问的header ，*号代表所有
		ctx.Writer.Header().Set("Access-Control-Allow-Credentials", "true")

		if ctx.Request.Method == http.MethodOptions {
			ctx.AbortWithStatus(http.StatusOK)
		} else {
			ctx.Next()
		}
	}
}
